Personal computer systems are well known in the art. They have attained widespread use for providing computer power to many segments of today's modern society. Personal computers (PCs) may be defined as a desktop, floor standing, or portable computer that includes a system unit having a central processing unit (CPU) and associated volatile and non-volatile memory, a display, an input-output device such as a keyboard and/or a mouse, a storage device such as a hard disk storage drive, and, in many instances, a network interface adapter. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to electrically connect these components together. Examples of such personal computer systems are IBM's PC 300 series, Aptiva series, and Intellistation series.
The widespread use of PCs in conjunction with networks has resulted in a reliance on the network resources, or other computer systems, for, just to name a few, telecommuting, obtaining news and stock market information, trading, banking, shopping, shipping, communicating in the form of Voice Internet protocol (VoiceIP) and email. For many, PCs represent an essential tool for their livelihood. In today's networked world, the availability and performance of the network is as important as the availability and performance of the personal computer. Thus, it is desirable to minimize loss of productivity by increasing availability of network resources.
Computer systems typically communicate with network resources via local area networks (LANs), such as campus-area networks (CANs) or home-area networks (HANs), or via wide area networks (WANs), such as metropolitan-area networks (MANs) or the Internet. More specifically, each computer system includes or is connected to a network switch to transmit transactions to other computer systems and each operating system running on the multiple computer systems has its own Transmission Control Protocol/Internet Protocol (TCP/IP) stack to coordinate transmission and receipt of the transactions. For instance, when data is being transmitted out of a computer system, the data is first forwarded to the TCP/IP stack, which packages packets of the data with headers. The headers, such as TCP headers or User Datagram Protocol (UDP) headers, identify the application programs running on the source and the destination computer systems that are involved in the transaction.
Unlike TCP, which requires an acknowledgment at the receiving end (handshaking) before the session can begin, UDP just sends out packets in a one-way transmission. UDP is more efficient, for instance, in real-time audio and video transmissions in which lost packets are preferably ignored. The lost packets are preferably ignored in such situations because there is insufficient time to retransmit the packet.
The headers identify sockets for the source and destination computer system, which are a combination of (1) the computer system's IP address and (2) the application's port. If the actual IP address is unknown but the computer system is known by name, a Domain Name System server (DNS server) converts the name into the IP address. In Windows® networks, for example, a Windows® Internet Name System server (WINS server) converts NetBIOS names into IP addresses. For clarity's sake, a socket is part of an operating system and is a software object that connects an application to a network protocol. In UNIX, for example, a program can send and receive TCP/IP messages by opening a socket and reading and writing data to and from the socket. This simplifies program development because the programmer need only worry about manipulating the socket and can rely on the operating system to actually transport messages across the network correctly. Note that a socket in this sense is completely soft—it is a software object, not a physical component.
A port is a portion of the configurable socket enabling communication connections over a networked computer system. Ports are logical numbers assigned to applications that communicate with other computer systems. Some common applications like FTP, SMTP, and HTTP have agreed-upon or well-known port numbers. For example, HTTP applications accessible via the Internet are at port 80, so a web server may be identified by its IP address and port 80. See more examples of ports and their common port numbers at FIG. 1.
With this background, it is time to turn to request-response (“RR”) communications over a networked computer system such as a request, e.g., a URL, from the Internet, e.g., a webpage. Currently, networked computer systems wait a finite amount of time, such as 50-200 ms, before sending the packets of data that collectively make up the request or response in an RR communication. This finite amount of time is for filling the packets with information with a mindset towards efficient load balancing and bandwidth utilization. Sometimes, however, the request or response is so small that the RR communication is waiting for no purpose. That is, there is no more information to put in the packets that make up the request or response; the packets, even if not full, are ready to go through the port to the other side. As a result, the remainder of the finite amount of time is idle time, i.e., needless delay, adversely affecting throughput efficiency, and, in such a case, throughput efficiency is better served by enabling such packets with no delay, or “nodelay” as this is commonly termed in the industry. On the other hand, however, the information filling the packets comprising the response or request in a RR communication is large, and bandwidth utilization, as well as throughput and load balancing are ill-served by immediately sending incompletely filled packets without allowing a standard finite amount of time to fill the packets. In this situation, delay, rather than nodelay, is preferred.
Presently, granularity to address RR communication through ports on a computer system is lacking. A present solution for rigidly addressing “nodelay”/delay dilemma to optimize connectivity is on a per adapter basis, which means all communications are happening within a nodelay or delay mode. Often, however, there are a mix of communications occurring over a networked computer system, wherein some communications require nodelay and others require delay in order to maximize bandwidth utilization and throughput efficiency. As a result, a per adapter basis is a one-size-fits-all solution that, in reality, does not fit all communications occurring over a networked computer system, and thereby, results in inefficiencies not solved by the prior solutions.
A need, therefore, exists, for methods, systems, and media for improved granularity of request-response communications over a networked computer system.